In certain conventional applications, computer systems sometimes include one or more processors and corresponding software that supports access to corresponding externally attached storage. For example, according to certain conventional applications, multiple computers may couple to a common shared storage system that stores large volumes of data. Two or more of the computers may be afforded access to the same files stored in the shared storage system.
To prevent file corruption, conventional applications supporting access to the shared storage typically employ some means for preventing two or more users from modifying the same file at the same time. Otherwise, the two or more computers having shared access to a given file in the shared storage system may simultaneously access and modify the same file. For example, one user may modify the file with a first set of changes. Another user may attempt modify the file with a second set of changes. Without an accounting for each user's changes, some of the changes to the file may be lost when the users eventually store the modified file back to the shared storage system. Thus, it is quite possible in such applications that the latter user writing the file to storage may overwrite changes by the first user storing the file to storage. Thus, simultaneous access to the same file in storage is sometimes avoided altogether.
There exist conventional techniques to enable multiple users to modify the same file in a storage system. For example, according to one conventional application, each of multiple computers couple to a server device that, in turn, selectively provides access to a corresponding storage system. While a first user at a corresponding computer modifies a file in the storage system, the server device prevents other users from accessing (e.g., writing to) the same file to prevent two different users from simultaneously modifying the same file. After the first user completes any modifications and updates to the file in the storage device, the server device may allow another user to access the file in the storage system. Thus, the server device prevents corruption of shared files in the storage system by restricting access to any files presently being modified by other users. In other words, only one user is allowed to access and modify a file at a time.
Independent of the above discussion regarding shared access to storage, a “computer cluster” is a group of interconnected computers that work together as a parallel computer on the same process. Thus, processing tasks can be distributed among multiple processing nodes to achieve a common goal. One popular implementation of a cluster includes computers running Linux™ as the operating system and Beowulf™ software to implement the parallelism. Most mature cluster implementations attempt to eliminate single points of failure so that an overall system is fault tolerant.
Clusters were originally developed by Digital Equipment Corporation in the 1980s. Certain cluster implementations not only support parallel computing, but also support shared use of file systems and peripheral devices. In general, parallel computing involves the simultaneous execution of the same task (split up and specially adapted) on multiple processors in order to obtain faster results.